Prime numbers - 3 algorithms¶
Algorithm 1¶
import math
def prim_nums_01(max_num):
nums = [2]
for a in range(2, max_num):
is_prime = False
for i in range(2, a):
if (a % i == 0):
is_prime = False
break
else:
is_prime = True
if is_prime:
nums.append(a)
return nums
Algorithm 2¶
def prim_nums_02(max_num):
''' '''
nums = [2, 3] # initial list
a = 5 # first odd number
c = 2 # depth
while (c < max_num / 2):
is_prime = True
for i in range(2, a):
if (i <= math.sqrt(a)):
if (a % i == 0):
is_prime = False
else:
pass
if is_prime:
nums.append(a)
c = c + 1
a = a + 2
return nums
Algorithm 3¶
def prim_nums_03(num):
'''
>>> list(filter(prim_nums_02, (x for x in range(2, N))))
[2, 3, 5, 7, 11, 13, 17, 19]
'''
is_prime = False
if num in (1, 2):
return num
for i in range(2, num):
if (num % i == 0):
is_prime = False
break
else:
is_prime = True
if is_prime:
return True
else:
return False
Test¶
def test_prim_numbers(algorithm):
N = int(input("Enter range: "))
print("Testing: ", algorithm.__doc__)
print("testcase #1: ", end="")
A = [7, 3, 12, 8, 9, 1, 6]
A_sorted = [1, 3, 6, 7, 8, 9, 12]
sort_algorithm(A)
print("Ok" if A == A_sorted else "Fail")
if __name__ == "__main__":
test_prim_numbers(prim_nums_01)
test_prim_numbers(prim_nums_02)
test_prim_numbers(prim_nums_03)
# print("Prime numbers 00: {}".format(prim_nums(N)))
# print("-"*40)
# print("Prime numbers 01: {}".format(prim_nums_01(N)))
# print("-"*40)
# # print("Prime numbers 02: {}".format(prim_nums_02(i) for i in range(2, N)))
# print("Prime numbers 02: {}".format(list(filter(prim_nums_02, (x for x in range(2, N))))))
# # print("Prime numbers 02: {}".format(filter(prim_nums_02, range(2, N))))